#pragma once

PBBIMCORE_TYPEDEFS(PB%Class%)

BEGIN_PBBIM_CORE_NAMESPACE
/*=================================================================================**//**
* @bsiclass                                     %Author%                        %CreateTime%
+===============+===============+===============+===============+===============+======*/
class PB%Class% : public PBBuildingElement
{
    DEFINE_T_SUPER(PBBuildingElement);
private:

	// new element : Vars declare
     %VarsFunctionDeclare%

protected:
    PBBIMCORE_EXPORT virtual StatusInt _AddOrReplaceInModel(ElementIdR newElementId, PBDesignContextCR designContext) override;
    PBBIMCORE_EXPORT virtual StatusInt _DeleteFromModel() override;
    PBBIMCORE_EXPORT virtual StatusInt _GetRelatedElements(T_ElementIdArrayR elements, bool recursive, RelatedDirection findRelatedDirections) override;
    PBBIMCORE_EXPORT virtual PhysicalGraphicsPtr _CreateDynamicGraphics(PBDesignContextCR designContext) override;

    PBBIMCORE_EXPORT virtual StatusInt _SetInstanceValues(BentleyApi::ECN::IECInstanceR instance) override;
    PBBIMCORE_EXPORT virtual StatusInt _GetInstanceValues(BentleyApi::ECN::IECInstanceCR instance) override;

public:
    PBBIMCORE_EXPORT PB%Class%();
    PBBIMCORE_EXPORT virtual ~PB%Class%();

	// new element : Vars GetSet
        %VarsFunctionGetSet%

};

END_PBBIM_CORE_NAMESPACE
